/*! \page Compiling Compiling

To build:

for the impatient: cd src; make;
for the slightly less impatient: cd src; make PLATFORM=ARCH;

NOTE: The build system currently requires GNU make.  This can usually be called
as 'make' or 'gmake'.

There are several makefile stubs in make/.  You can look for your architecture
there or roll your own.  Typing 'make' (or possibly gmake) without any arguments 
will cause the build program to look for `uname -s`.mk(for example, on Linux, it 
will look for Linux.mk).  You can choose the platform by typing 'make PLATFORM=arch'.

There are various variables to set in the .mk files.  The most important are
CXX and CXXFLAGS; the rest are performance and debugging-related(these are 
also very important in large calculations!)  See make/Linux.mk for an example
of a fairly well-optimized .mk file.

List of preprocessor flags(these may be defined by -D[FLAG] with most
compilers.  List them in the CXXFLAGS variable along with any optimization
flags.)  These turn on/off the use of external libraries.

<table>
  <tr> <td> DEBUG_WRITE <td> Enable extra debugging output.</tr>
  <tr> <td> SUPERDEBUG <td> Enable extra extra debugging output.</tr>
  <tr> <td> RANGE_CHECKING <td> Enable range checking of arrays.  Big performance hit if you
        turn this on! </td>


  <tr> <td> NDEBUG <td> Turn off assert()'s in code.  For less safety and better performance
        set this flag.</td>

  <tr> <td> USE_BLAS <td> Enable usage of CBLAS libraries.  This will enable BLAS in some
of the linear algebra routine and enable BLAS_MO, which is a very fast MO
evaluator for some archetectures(Itanium is one that really benefits from this).
You must also set the BLAS_LIBS and BLAS_INCLUDE variables. </tr>

  <tr> <td> USE_LAPACK <td>  Enables usage of LAPACK libraries. You must also set the LAPACK_LIBS and BLAS_INCLUDE variables.</tr>

  <tr> <td> USE_MPI <td>  Enable use of MPI parallelization.  For large calculations, this is quite necessary. </tr>

  <tr> <td> USE_EINSPLINE <td> Enable EINSPLINE library.  EINSPLINE_INCLUDE and EINSPLINE_LIBS must be defined. </tr>
</table>



Makefile variables:
<table>
  <tr> <td> CXX <td> C++ compiler.  For example, for a serial compile, set this to g++.  For
        parallel, set it to mpiCC or mpicxx (or mpic++). </tr>
  <tr> <td> CXXFLAGS <td> Flags to pass to the compiler.  Put optimization (-O2) flags, etc
        here.  Must also include the option "$(INCLUDEPATH)" </tr>
  <tr> <td> DEBUG <td> Define any debugging flags here.  An optimized DEBUG might be
            '-DNDEBUG'.  A safe and slow DEBUG could be 
            '-DDEBUG_WRITE -DRANGE_CHECKING' </tr>

  <tr> <td> LDFLAGS <td>  Linker flags.  Usually you don't need anything here, but some 
      compilers need '-lm' for the math libraries. </tr>
  <tr> <td> BLAS_LIBS <td>  The BLAS libraries(for example: -L/usr/lib -lcblas </tr>
  <tr> <td> LAPACK_LIBS <td>  LAPACK libs(as BLAS) (ex. -L/opt/lapack/lib -llapack) </tr>
  <tr> <td> LAPACK_INCLUDE <td> LAPACK headers (for examples -I/opt/lapack/ </tr>
  <tr> <td> DEPENDMAKER <td> If you have gcc, it should be g++ -MM -I $(INCLUDEPATH) </tr>
  <tr> <td> EINSPLINE_LIBS <td> The location of the EINSPLINE libs (ex. -L/usr/local/lib -leinspline) </tr>
  <tr> <td> EINSPLINE_INCLUDE <td> The location of the EINSPLINE headers (ex. -I/usr/local/include/einspline) </tr>

</table>

</pre>
*/
